#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
运行用户列表测试的脚本
使用更稳定的元素定位策略
"""

import os
import sys
import time
import logging
import pytest
from datetime import datetime

# 设置项目根目录到系统路径
project_root = os.path.dirname(os.path.abspath(__file__))
sys.path.append(project_root)

# 设置日志配置
log_dir = os.path.join(project_root, 'logs')
if not os.path.exists(log_dir):
    os.makedirs(log_dir)

log_file = os.path.join(log_dir, f'user_list_test_{datetime.now().strftime("%Y%m%d_%H%M%S")}.log')
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler(log_file, encoding='utf-8'),
        logging.StreamHandler()
    ]
)

if __name__ == "__main__":
    logging.info("开始运行用户列表测试")
    
    # 设置报告目录
    report_dir = os.path.join(project_root, 'tests', 'reports')
    if not os.path.exists(report_dir):
        os.makedirs(report_dir)
    
    html_report = os.path.join(report_dir, f'user_list_test_report_{datetime.now().strftime("%Y%m%d_%H%M%S")}.html')
    
    # 运行测试并生成报告
    try:
        # 使用pytest运行测试
        args = [
            '-v',                                  # 详细输出
            '--html=' + html_report,              # HTML报告路径
            '--self-contained-html',              # 自包含HTML报告
            'tests/test_cases/test_user_list.py'  # 测试文件路径
        ]
        
        # 添加自定义参数
        if len(sys.argv) > 1:
            args.extend(sys.argv[1:])
        
        logging.info(f"运行测试命令: pytest {' '.join(args)}")
        exit_code = pytest.main(args)
        
        # 检查测试结果
        if exit_code == 0:
            logging.info("所有测试通过！")
        else:
            logging.warning(f"测试完成，但有失败的测试用例。退出代码: {exit_code}")
        
        # 输出报告路径
        logging.info(f"HTML报告已生成: {html_report}")
        logging.info(f"日志文件: {log_file}")
        
    except Exception as e:
        logging.error(f"运行测试时出错: {e}")
        sys.exit(1)
    
    # 返回pytest的退出代码
    sys.exit(exit_code) 